Local computers use highly precise external reference clocks to correct any internal errors that the clocks in the local computer may have. Typical reference clocks signal the start of a second by transmitting a synchronization signal, such as a pulse per second, which must be captured by the local computer's synchronization interface, and subsequently time-tagged with a local time stamp. The local system then uses the synchronization signal to generate its own estimate of its own clock's error.
For example, the local, or host computer, will receive and time stamp a pulse, which is sent at the beginning of a second. If the internal clock of the local computer has elapsed one-half second, then the internal clock is off by this amount. The local computer then looks for the next pulse, and steers the local clock so that it is synchronized with the external reference clock.
However, it is extremely difficult to precisely synchronize a local clock with a reference clock. A synchronization signal emitted by a reference clock incurs multiple sources of delay before it can be tagged with a local time stamp by the local computer. Constant delays, such as delays due to signal transmission along a cable, can be accounted for by adding the delay to the reference time stamp. Variable delays caused by interrupts and contention for access to the central processing unit (CPU), however, are for unknown lengths of time. Therefore, these variable delays cannot be accurately corrected, and are a source of an unknown error in time transfer and synchronization processes.
For example, whether one or more interrupts occurred before the time stamp is assigned to the synchronization signal is unknown. Also, the amount of time that each interrupt lasted is unknown and variable. Therefore, the synchronization signal may be assigned a time stamp by the host CPU as soon as it is received, or it may not receive a time stamp until 10,000 micro seconds or more have elapsed.
Even timing signals generated by high-performance time generation devices, such as cesium clocks and the like may degenerate in accuracy due to the inherent delays, such as interrupts and contentions, of multiprocessing computer systems. Deterministic high-precision time transfer to contemporary computer workstations is therefore not possible using external reference pulses due to the lack of known constants among these delays.
Clearly, a need exists to reduce or eliminate the delays that last for unknown lengths of time. A need also exists to determine an error bound for the synchronization signal received from the reference clock, so that any delays that do occur can be measured. Once the error bound is determined, fairly precise synchronization can be achieved using a number of known synchronization techniques.